Programmable logic is a type of logic that can be programmed at the circuit level. This is in contrast to application specific logic. Application specific logic is a circuit or grouping of circuits that is specifically designed to perform a certain function. A circuit can be implemented using either application specific logic or using programmable logic. In general, implementing a circuit using application specific logic has larger non-recoverable engineering (NRE) costs. NRE costs are those costs incurred in preparing to manufacture a product such as design and compliance testing. A solution using programmable logic, however, often has higher manufacturing costs. As such, high volume products often use application specific circuits while lower volume products use programmable logic. Programmable logic is also popular in products designed to be easily upgraded.
A programmable logic chip can be programmed at the circuit level because it has a programmable layer connecting functional units. A functional unit is a circuit implementing a defined function that can range from simple logic gates to arithmetic units. Those skilled in the arts of electronic product design or digital circuit design are familiar with many types of programmable logic including those using fusible elements, volatile elements, nonvolatile elements, erasable nonvolatile elements, and conductive films such as metal or polysilicon.
A fusible element is programmed by breaking an electrical connection between two points. Instead of breaking an electrical connection, other solutions control the state of the electrical connection. For example, a transistor can control an electrical connection. If the transistor is conducting, the two points appear to be electrically connected. If the transistor is not conducting, the two points appear to be electrically disconnected. A memory cell can control the transistor. Nonvolatile memory retains a value with or without power; these devices can be programmed once and trusted to keep their programming. Volatile memory can not retain a value unless it receives power; these devices must be programmed every time power is applied. Finally, some nonvolatile can be erased and programmed again.
In choosing to use application specific logic or programmable logic, the total cost per unit is evaluated. For example, an application specific solution has $100 NRE and a $1 per unit manufacturing cost while a programmable logic solution has $50 NRE and $2 per unit manufacturing cost. If the expected production is 10 units then programmable logic is better. If the expected production is 100 units, then application specific logic is better. Producers of programmable logic are always seeking ways to reduce the per unit manufacturing cost.
One way to reduce per unit manufacturing cost is to offer a programmable logic product that can be used in a great number of different solutions. One way to accomplish this is by using configurable on-chip memory. An on chip-memory is a collection of volatile memory cells on a semiconductor chip. On-chip memory can have many properties.
Two of the possible properties are single port or dual port. A single port memory cell has a single port through which the chip is accessed while a dual port memory cell has two.
FIG. 2, labeled as “prior art” illustrates a single port memory cell. The value stored in a memory cell 201 can be read by raising the voltage of a read/write line 206 which causes a first transistor 205 to pass voltage to a first wire 202 and causes a second transistor 204 to pass voltage to a second wire 203. Based on the memory cell shown, the wires 202, 203 have complementary voltages meaning there will be a high voltage on one wire and a low voltage on the other. A value can be stored in the memory cell by placing complementary voltages on the wires and raising the voltage of the read/write wire 206. The memory cell illustrated is a static random access memory cell. The memory cell is accessed through a single port. Transistors 204, 205 and wires 202, 203, and 206 are part of the single port.
Those practiced in the art of digital design or random access memories are familiar with the single port memory illustrated in FIG. 2 as well as a variety of other circuits and implementations of single port memories. The prior art single port memory is intended to illustrate the concept of a port and a memory cell. Neither FIG. 2, nor any other figure, is intended as a limitation to a specific type of memory cell or port.
FIG. 3, labeled as “prior art”, illustrates a dual port memory. The dual port memory contains the memory cell 201 and the port of the single port memory of FIG. 2 as a first port. A second port, however, has been added. The second port has a second read/write wire 301, a third transistor 302 passing voltage to a third wire 304, and a fourth transistor 303 passing voltage to a fourth wire 305. The operation and use of the second port is similar to that of the first port discussed above as part of the single port memory. FIG. 3 is also not intended as a limitation, but is intended to introduce the concept of a second port. Those practiced in the art of digital design or random access memories are familiar with the dual port memory illustrated in FIG. 3 as well as many other designs and implementations.
As discussed above, programmable logic chips often contain memory. Some programmable logic chips contain dual port memory that can be configured as a single port memory. These chips accomplish the configuration by disabling one of the ports to the dual port memory. Returning to FIG. 3, removing the second port results in the circuit illustrated in FIG. 2. The problem with this reconfiguration solution, as those practiced in the art of integrated circuit design know, is that wires are expensive because they take up space. Disabling the second port results in wasted wires and a lot of wasted space. The cost of an integrated circuit can be approximated by how much space it uses. There is a need for a reconfigurable dual port memory that does not result in the waste of so much wiring space.